دانلود رایگان ایبوک هوش مصنوعی ترجمه شده به وسیله‌ی اینجانب سهراب جلوه گر جلوه‌گر

امیدوارم لحظات خوبی در این وب سایت داشته باشید .....

██ متن فصل نوزدهم نسخه‌ی رایگان ایبوک هوش مصنوعی ██
نویسنده : سهراب جلوه گر جلوه‌گر تاریخ : سه شنبه 14 شهريور 1394

 

 

██ متن فصل نوزدهم نسخه‌ی رایگان ایبوک هوش مصنوعی ██

 

مترجم: سهراب جلوه گر جلوه‌گر

 

فصل سیستم‌های خِبره  

 

فهرست برخی از عنوان‌های نوشته‌ها

سیستم‌های خبره

برخی از کاربردهای سیستم‌های خبره

چرا یک سیستم خبره را می‌سازیم‌؟

ویژگی‌های خوب یک سیستم خبره

سیستم‌های خبره‌ی قانون‌گرا

آشنایی با چند سیستم خبره

سیستم‌های خبره

 تعریف- خبره‌- در صورتی که ما بگوییم فردی در رشته‌ای‌ یک خبره می‌باشد‌، منظور ما‌ این است که‌ در آن تخصّص محدود،‌ شایستگی بالایی را به نمایش می‌گذارد‌.

 تعریف- سیستم‌های خبره- برنامه‌هایی طرّاحی شده برای مدلسازی و استدلال در مورد دانش انسان می‌باشند

و معمولاً‌ حول یک دامنه‌، مثل تشخیص بیماری‌، پرواز فضایی‌، لُجِسْتیک(اقدامات مربوط به تهیه و توزیع) و عیب‌یابی نرم‌افزار‌ تمرکز می‌کنند‌. در این سیستم‌ها‌، برنامه‌نویسان‌، واقعیّت‌ها و قوانین را اضافه می‌کنند و سیستم‌، پردازه‌ی استنتاج را به صورت خودکار‌ انجام می‌دهد و می‌توانند یا از زنجیره‌ی پیشرُو  یا از زنجیره‌ی پَسرُو  استفاده نمایند‌.

برخی از کاربردهای سیستم‌های خبره

این سیستم‌ها‌ ممکن است برای طبقه‌بندی‌، تشخیص عیب‌، پیداکردن خرابی‌، تفسیر اطّلاعات‌، طرّاحی‌، پیکربندی، و یا پیش‌بینی‌ به کار روند‌؛ آنها شاید برای آموزش دادن‌، نمایش دادن‌، تحلیل‌، مشاوره‌، تجدید نظر یا کنترل‌ به کار روند‌. استفاده‌ی تجاری سیستم‌های خبره‌ شامل این موردها می‌باشند‌: یک سیستم استفاده شده برای مشاوره(ارائه‌ی نصیحت) در مورد وام خانه‌؛ یک سیستم استفاده شده به وسیله‌ی یک تولید کننده‌ی کامپیوتر، برای برّرسی اجرای کامل دستورات مشتریان‌؛ یک سیستم استفاده شده در بیمارستان، برای تفسیر اندازه‌گیری‌های ریّوی، جهت مشاهده‌ی علائم ناخوشی ریّه‌؛ یک سیستم استفاده شده به وسیله‌ی شیمیدان‌ها، برای تفسیر توده‌ی داده‌های طیفْ‌سنج، برای کمک به پی‌بردن به ساختار مولکولی ترکیبات آلی(زیستی)‌؛ و یک سیستم، برای کمک به زمین‌شناسان، برای ارزیابی مکان‌های معدنی، برای ذخایر‌.

چرا یک سیستم خبره را می‌سازیم‌؟

برای تکثیر خبره‌ی نادر(كمياب) و پرهزینه‌؛ برای فرمول‌بندی دانش خبره؛ و برای جمع‌آوری منبع‌های دانش متمایز، یک سیستم خبره را می‌سازیم‌. دلایل ممکن دیگری هم وجود دارند‌؛ برخی از افراد‌ دلیل می‌آورند که سیستم‌های خبره‌ در مقایسه با انسان‌ها‌ کم‌تر خطا می‌کنند، مناسب‌تر هستند و رُک‌تر هستند‌، یا در مقایسه با خبره‌های انسانی‌، بی‌طرف‌تر می‌باشند‌؛ البتّه‌ سیستم‌های خبره‌ عیب‌های زیادی هم دارند‌، که باید استفاده از آنها را به دامنه‌های مشخّص‌، محدود نماییم‌. سیستم‌های خبره‌، دارای بینش‌، دلسوزی‌، فهم انگیزه‌ی انسانی‌، توانایی حدس زدن‌، معمولاً توانایی یادگیری‌، دانش قضاوت صحیح(عقل سلیم) اندکی می‌باشند‌.

ویژگی‌های خوب یک سیستم خبره

در صورتی که سیستم خبره‌ به صورت محاوره‌ای باشد‌، یک رابط کاربری خوب‌، بسیار ضروری می‌باشد‌. توجّه کنید که مکالمه‌ای که سیستم خبره‌ با شخص کاربر‌ انجام می‌دهد باید به صورت «طبیعی»، به وسیله‌ی کاربر، مطرح شده باشد، که شامل موردهایی نظیر این‌ها می‌باشد‌: شیوه‌ی سؤالاتی که سیستم می‌پرسد‌ باید طبیعی باشد‌؛ سؤالات احمقانه نباید وجود داشته باشند (کسانی که به سیستم‌ جواب می‌دهند باید با دلیل‌ تدبیر کرده باشند‌)‌؛ سیستم‌ باید قادر باشد توضیح دهد که چرا یک سؤال را می‌پرسد و هر نتیجه‌ای که به آن می‌رسد را توجیه نماید و باید به کاربر‌  در مورد سیستم‌ اطمینان دهد‌.

در استدلال‌ باید یک سیستم خبره‌ قادر به انجام این موردها باشد‌: باید استنتاج‌هایش باورکردنی و نه الزاماً صحیح باشند‌؛

باید قادر به کار با دامنه‌ی دانش ناقص و موردهایی که اطّلاعات‌، ناقص هستند‌، باشد‌؛ اغلب‌، دانش و یا اطّلاعات‌، ناکامل می‌باشند و دانش و یا داده‌ها‌ ممکن است قابل اعتماد نباشند (مثلاً‌ ممکن است دارای خطا باشند) و شاید‌ دانش و یا داده‌ها‌ به صورت نادرست‌ بیان شده باشند (به عنوان مثال‌، «‌اگر دارای دندان بلندی باشد‌، آنگاه‌ این‌ خطرناک می‌باشد‌.»‌)‌؛

همچنین‌ باید سیستم‌، رقابت همزمان مفروضات را در نظر داشته باشد‌.

سیستم‌های خبره باید بتوانند به‌سادگی‌ اطّلاعات جدید را یکی نمایند(تطبیق دهند) (یا از طریق مهندسی دانش بیش‌تر، یا با استفاده از یادگیری ماشینی)‌.

سیستم‌ خبره‌ی قانون‌گرا 

 تعریف- سیستم‌ خبره‌ی قانون‌گرا، در علم کامپیوتر، سیستمی خبره است که براساس مجموعه‌ای از قانون‌ها که یک انسان خبره برای رسیدگی کردن به یک مسأله دنبال می‌کند، باشد.

روش‌های زیادی می‌توانند برای ساخت سیستم‌های خبره‌ استفاده شوند‌. امّا اکثر سیستم‌های خبره که تا‌کنون ساخته شده‌اند، سیستم‌های قانون‌گرا می‌باشند‌؛ یعنی‌، پایگاه دانش آنها شامل واقعیّت‌ها و قانون‌ها می‌باشد‌.

پایگاه دانش

پایگاه دانش‌، شامل واقعیّت‌ها و قوانین می‌باشد‌. تصوّر کنید که ما در حال ساخت یک سیستم خبره‌ی قانون‌گرا برای تشخیص پزشکی باشیم‌؛ قانون‌ها، ارتباط‌های میان علائم و عبارت‌های پزشکی را کد خواهند کرد‌؛ واقعیّت‌ها، دانش را در مورد بیماری جاری کد خواهند کرد‌؛ در سیستم‌های قانون‌گرا، [قانون‌ها‌] اغلب‌ به صورت «اگر‌... آنگاه‌...»‌ نوشته می‌شوند‌؛ به صورت برابر‌، می‌توانند به یکی از شکل‌هایی که برای موردهای زیر‌ استفاده می‌شوند‌، نوشته شوند‌:

if  p1 AND p2 … AND pn then q

(p1  …  pn)  q

q  ¬p1  …  ¬pn

برای سیستم‌های قانون‌گرا‌ استفاده از منطق گزاره‌ای‌، زمانی که گزاره‌ها دارای هیچ آرگومانی نمی‌باشند‌، کاملاً معمولی است‌؛ بنابراین‌ در این موقع، متغیّرها و سمبل(نام)‌های تابعی‌، در واقعیّت‌ها و قانون‌ها وجود ندارند‌؛ در مثال‌های زیر‌ خودمان را با این وضعیّت‌، محدود نموده‌ایم‌. نتیجه‌ی یک قانون‌ شاید یک قلم تجزیّه ناپذیر باشد که در قانون قبلی‌ آمده است‌. می‌توانیم این زنجیره را به شکل گرافیکی‌ به صورت یک گراف AND-OR‌ نمایش دهیم‌.

 مثال- برای قانون‌های زیر‌:

if p AND q then r

if s AND t then r

if u then p

if v then p

if w AND x then s

if y then s

if z then t

 گراف زیر را داریم‌:

 

 مثال- در زیر‌ مثالی از پایگاه دانشی برای شناسایی حيوان‌ها را می‌بینید‌:

if animal Gives Milk  then animalIsMammal

if animalHasHair  then animalIsMammal

if animalIsMammal AND animalChews Cud  then animalIsUngulate

if animalIsUngulate AND animalHasLongNeck  then animalIsGiraffe

if animalIsUngulate AND animalIsStriped  then animalIsZebra

از این مثال‌ در آینده استفاده خواهیم کرد‌.

موتور استنتاج

موتور استنتاج‌، استنتاج‌ها را با استفاده از دانش موجود در پایگاه دانش‌ استخراج می‌کند و این کار را با استفاده از استنتاج قانون‌گرا ‌ انجام می‌دهد‌؛ از یک نقطه نظر منطقی‌، اساساً‌ از روش تحلیل ‌ استفاده می‌کند‌. یک چشم‌انداز(دورنمای) استنتاج(استدلال) قانون‌گرا، این است که، در حال انجام یک جستجوی گرافی AND-OR می‌باشد؛ به طور مؤثّر‌، ما به دنبال یک مسیر که ریشه و برگ‌ها را به هم‌ متّصل می‌کند‌، می‌گردیم‌؛ در صورتی که یک گره‌، یک برگ باشد‌، در این صورت، این گره‌، یک واقعیّت را که باید درست باشد، نمایش می‌دهد‌.

در سیستم‌های خبره‌ی محاوره‌ای‌، فرض نمی‌کنیم که همه‌ی واقعیّت‌ها شناخته شده‌اند و در گذشته در پایگاه دانش‌ وجود داشته‌اند‌. بنابراین‌ در زمانی که در تلاش برای این هستیم که ببینیم که آیا یک گره‌ی برگ(واقعیّت)‌، درست است یا نه‌، پایگاه دانش را برّرسی خواهیم نمود‌، اگر در پایگاه دانش نباشد‌، در این صورت‌ از شخص کاربر‌ پرسش می‌کنیم که آیا واقعیّت‌، درست است یا نه؟‌؛ جواب کاربر‌ می‌تواند به پایگاه دانش‌ اضافه شود‌.

زنجیره‌ی پَسرُو ‌- زنجیره‌ی پسرو‌، استدلال به وجود آمده(مشتق شده) از هدف می‌باشند. در عبارت‌های گراف AND-OR‌، این نوع از استدلال‌، از ریشه‌ی گراف‌ شروع می‌شود و برای پیداکردن مسیری از ریشه به برگ‌ها تلاش می‌نماید‌.

زنجیره‌ی پیشرُو ‌- این روش‌، استدلال مشتق شده از داده‌ها هم نامیده می‌شود‌؛ در عبارات گراف AND-OR‌، این نوع از استدلال‌، از برگ‌ها شروع می‌کند و تلاش می‌کند که مسیری را از برگ‌ها به طرف ریشه پیدا نماید‌.

 

برخی از سیستم‌ها‌ منحصراً از یکی از روش‌های زنجیره‌ی پیشرو یا زنجیره‌ی پسرو استفاده می‌کنند‌. امّا تعداد زیادی از سیستم‌ها از هر دو روش‌ استفاده می‌کنند، که این کار‌، خیلی طبیعی می‌تواند باشد‌؛ به عنوان مثال، به یک مشاوره با یک پزشک‌ توجّه نمایید‌؛ بیمار‌ برخی از علائم را تشریح می‌کند‌؛ نتایج‌ با استفاده از زنجیره‌ی پیشرو‌ به دست می‌آید (شاید فقط به طور آزمایشی)‌. پزشک‌ یک فرض را انتخاب می‌کند و با استفاده از زنجیره‌ی پسرو‌ به علائمی می‌رسد که به وسیله‌ی بیمار‌ بیان شده‌اند‌. بیمار‌ دوباره صحبت می‌کند‌ و شاید به پرسشی دیگر‌ جواب دهد و یا از او اطّلاعات دیگری خواسته شود‌ و این کار(پروسه)‌ باز هم تکرار می‌شود‌.

 

توضیح‌های استدلال

در گذشته اهمّیّت داشتن توضیح روان(سلیس) را در یک سیستم خبره‌ بیان کردیم‌. سیستم‌های قانون‌گرا‌ معمولاً‌ دو امکان را برای ارائه‌ی توضیحات به کاربران‌ ارائه می‌کنند‌؛ کاربران ممکن است یا بپرسند، «چرا‌؟» و یا بپرسند، «چگونه‌؟»‌؛ سیستم‌ این سؤالات را با نمایش برخی از قوانین مربوط‌ جواب می‌دهد‌؛ برای مثال‌، تصوّر نمایید که سیستم خبره‌ی شناسایی حيوان‌ها‌، که در گذشته در همین فصل آن را بیان کردیم، از کاربر‌ این پرسش را می‌پرسد که، «آیا حیوان‌ نُشخوار می‌کند‌؟»‌؛ در این مورد‌ کاربر‌ می‌تواند به جای جواب دادن به این سؤال‌ بپرسد که‌: «چرا شما این سؤال را می‌پرسید‌؟»؛ برای جواب دادن به این سؤال کاربر‌، سیستم خبره‌ با نمایش یک گراف AND-OR‌ پاسخ می‌دهد‌؛ برای مثال‌ ممکن است سیستم‌ پاسخ دهد‌:

«من از شما پرسیدم که، آیا حیوان نشخوار می‌کند‌؟‌، زیرا‌ این‌ در تشخیص اینکه حیوان‌، جانور سُم‌دار است‌، کمک می‌کند‌؛ قبلا‌ً تشخیص داده شده که جانور‌ پستاندار است‌؛ بنابراین، اگر حیوان، نُشخوار می‌کند‌، آنگاه‌ حیوان‌، سم‌دار می‌باشد‌؛ این در تشخیص اینکه، آیا حیوان زرّافه است‌؟‌،‌ کمک می‌کند‌؛ در صورتی که حیوان، سم‌دار باشد و دارای گردن بلند باشد‌، زرّافه می‌باشد»؛

تصوّر نمایید که یک سیستم خبره‌ تشخیص داده که برخی از گره‌ها‌ درست هستند‌؛ در گفتن نتیجه به کاربر‌، کاربر‌ می‌تواند بپرسد‌: «چگونه به این نتیجه رسیدی‌؟»‌؛ برای این کار‌، سیستم خبره‌ با نمایش قسمت‌های موفّق گراف AND-OR‌ جواب می‌دهد‌. ایده‌ این است که، برای توجیه کردن یک استنتاج‌، سیستم‌ باید نشان دهد که کدام قانون‌ها، در رسیدن به آن نتیجه‌، اجرا می‌شوند‌. برای مثال‌، تصوّر کنید در موردی که سیستم‌ تشخیص می‌دهد که حیوان‌ یک جانور سُم‌دار می‌باشد‌، کاربر‌ ممکن است درخواست کند که، «چگونه به این نتیجه رسیدی‌؟»‌، و جواب سیستم‌ ممکن است به صورت زیر باشد‌:

«این قانون‌ برای تشخیص اینکه آیا حیوان،‌ سم‌دار است‌، استفاده شده ‌است: اگر حیوان‌، پستاندار است و نشخوار می‌کند‌، سم‌دار می‌باشد‌.

این قانون‌ برای تشخیص اینکه آیا جانور‌، پستاندار است‌، استفاده شده است‌: حیوان‌، دارای مو(زلف) می‌باشد‌، پس‌ پستاندار می‌باشد‌.

شما به من گفتید که: حیوان‌، دارای مو می‌باشد‌.

شما به من گفتید که: حیوان‌، نشخوار می‌کند‌.»

 

آشنایی با چند سیستم خبره

بیش‌تر پژوهش‌های انقلابی در سیستم‌های قانون‌گرا‌ در مورد سیستمی به نام MYCIN‌ انجام شده است‌. MYCIN‌ برای استفاده‌ی یک پزشک، برای تشخیص عفونت‌های باکتریایی خون‌، طرّاحی شد‌ و در حدود 450 قانون دارد‌.  بازده MYCIN و طبیعی بودن مکالمه‌ی آن‌، با مشارکت قطعه‌های خیلی کوچک دانش، که شاید در مدّت استنتاج‌ به کار گرفته شوند‌، بهبود یافت‌.

 

یکی دیگر از سیستم‌های قانون‌گرای خبره‌ی مشهور‌، PROSPECTOR  (‌برای ارزیابی مکان‌های معدنی دارای استعداد برای استخراج‌) می‌باشد.

 

 سیستم خبره‌ی دیگر، R1 (كه XCON‌‌ هم ناميده شده است)، برای برّرسی‌، کامل کردن و پیکربندی تقاضاهای تجهیزات کامپیوتری مشتری‌ می‌باشد‌.

PUFF، یکی دیگر از سیستم‌های خبره می‌باشد که در پزشکی، برای فهمیدن وضعیّت‌های تنفّسی، از آن استفاده می‌شود:

 

بعد از برخی از آزمایش‌ها، با ساخت چند سیستم خبره‌ی قانون‌گرا‌، پژوهشگران هوش مصنوعی‌ دریافتند که، فقط‌ پایگاه دانش‌، وابسته به دامنه می‌باشد‌. موتور استنتاج و رابط کاربر‌، (‌نسبتاً‌‌) مستقل از دامنه بودند‌. به‌طور‌کلّی‌، برای ساخت یک سیستم خبره‌ی جدید، برای یک دامنه‌ی مختلف‌، به یک پروسه‌ی مهندسی دانش ، برای دریافت کردن قانون‌ها، نیاز داریم‌.

چکیده‌ی مطلب‌های فصل نوزدهم

سیستم‌های خبره، برنامه‌هایی طرّاحی شده برای مدلسازی و استدلال در مورد دانش انسان می‌باشند.

سیستم‌ خبره‌ی قانون‌گرا، در علم کامپیوتر، سیستمی خبره است که براساس مجموعه‌ای از قانون‌ها، که یک انسان خبره برای رسیدگی کردن به یک مسأله دنبال می‌کند، باشد.

برای سیستم‌های خبره‌ی قانون‌گرا،‌ استفاده از منطق گزاره‌ای،‌ زمانی که گزاره‌ها دارای هیچ آرگومانی نمی‌باشند‌، کاملاً معمولی است‌؛ بنابراین‌ در این موقع متغیّرها و سمبل(نام)‌های تابعی‌، در واقعیّت‌ها و قانون‌ها وجود ندارند‌.



:: برچسب‌ها: ██ متن فصل هیجدهم نسخه‌ی رایگان ایبوک هوش مصنوعی ██ , مترجم: سهراب جلوه گر جلوه‌گر , فصل سیستم‌های خِبره , آموزش هوش مصنوعی,

██ متن فصل هیجدهم نسخه‌ی رایگان ایبوک هوش مصنوعی ██
نویسنده : سهراب جلوه گر جلوه‌گر تاریخ : سه شنبه 16 شهريور 1394

 

 

██ متن فصل هیجدهم نسخه‌ی رایگان ایبوک هوش مصنوعی ██

 

مترجم: سهراب جلوه گر جلوه‌گر

 

فصل الگوریتم‌های ژنتیکی

 

توجّه:      

برای یادگیری بهتر مطلب‌های این فصل بهتر است قسمت «الگوریتم‌های ژنتیکی» موجود در فصل «الگوریتم‌های جستجوی محلّی» همین کتاب الکترونیکی را هم بخوانید.

فهرست برخی از عنوان‌های نوشته‌ها

تاریخچه

تعریف الگوریتم‌های ژنتیکی

تکامل‌ در دنیای واقعی

الگوریتم‌های ژنتیکی

گوناگونی‌های زیاد الگوریتم‌های ژنتیکی

کاربردهای الگوریتم‌های ژنتیکی

تئوری تکاملی داروین(باقی ماندن شایسته‌ترین  یا مناسب‌ترین)

 

هِربِرت سپِنسِر

        این تئوری به وسیله‌ی هِرْبِرْتْ سْپِنْسِرْ  و چارْلْزْ رابِرْتْ دارْوینْ  به وجود آمد. این تئوری می‌گوید‌: گونه‌هایی باقی می‌مانند که می‌توانند بر مشکلات‌ غلبه کنند.      

چارلز داروین

 

شکل بالا- این شکل بیان کننده‌ی نظریّه‌ی تکامل در انسان است.

تاریخچه

 

جان هِنری هالِند  الگوریتم‌های ژنتیکی در دهه‌ی هفتاد میلادی‌ به وسیله‌ی جانْ هِنْری هالِنْدْ ‌ بیان شد‌؛ در دهه‌ی هشتاد میلادی‌ عمومیّت یافت و براساس تئوری تکاملی داروین(باقی ماندن شایسته‌ترین یا مناسب‌ترین) بود‌. الگوریتم‌های ژنتیکی‌ می‌توانند برای حلّ انواعی از مسأله‌ها که با استفاده از روش‌های دیگر‌، برای حل‌، آسان نمی‌باشند، مورد استفاده قرار گیرند‌.

تعریف الگوریتم‌های ژنتیکی

 تعریف اوّل- یک الگوریتم جستجو که رشته‌های دودویی بهینه را با پردازش یک جمعیّت اولیّه‌ی تصادفی از رشته‌ها‌، با استفاده از جهش مصنوعی، عمل تعویض  و عملگرهای انتخاب تولید می‌کند. (گُلْدْبِرْگْ ، 1989 ميلادي).

 تعریف دوّم- یک الگوریتم تکاملی‌ که هر فرد(راه حل) را با استفاده از برخی فرم‌های رمزشده‌، که کُرُوموزوم  یا ژِنوم، نامیده می‌شوند‌، به وجود می‌آورد.

تکامل‌ در دنیای واقعی

هر سلّول  یک موجود زنده‌ دارای یک هسته  است؛ و در هسته،  کروموزوم‌هایی وجود دارد‌؛ هر کروموزوم‌، شامل یک مجموعه از ژِنْ ‌ها می‌باشد‌؛ هر ژن‌ برخی از ویژگی‌های(خواصّ) موجود زنده (مانند رنگ چشم) را تعیین می‌کند‌. یک مجموعه از ژن‌ها‌ در برخی از موردها‌ ژِنوتیپ(ژِنوتایپ) ‌ نامیده می‌شود‌. یک مجموعه از ویژگی‌ها (نظیر رنگ چشم)، گاهی فِنوتیپ(فِنوتایپ)  نامیده می‌شود‌. انتشار(زاد و ولد)‌، شامل جفت‌گیری  ژن‌هاي والدین و سپس‌ مقدار کوچکی‌ جهش ‌ می‌باشد‌. تکامل‌ براساس «بقای مناسب‌ترین یا شایسته‌ترین» می‌باشد‌.

 

شکل بالا- سلّول، هسته، کروموزوم و ژن

 

شکل بالا- کروموزوم واقعی در زیر میکروسکوپ

 

الگوریتم‌های ژنتیکی

شروع‌ با یک تصوّر

فرض کنید که شما مشکلی دارید و نمی‌دانید که چگونه آن را حل نمایید‌. برای حلّ این مشکل‌ چه کار می‌توانید بکنید‌؟، آیا می‌توانید به طریقی‌ از یک کامپیوتر‌ برای پیدا کردن یک راه حل‌ استفاده نمایید‌؟؛ این کار‌ باید خوب باشد‌! می‌توانید آن را انجام دهید‌؟.

یک راه حلّ گنگ

 یک الگوریتم «تولید و تست گنگ»‌:

تکرار کن

        یک راه حلّ ممکن تصادفی را تولید کن

        راه حل‌ را امتحان کن و خوب بودن آن را بسنج

تا موقعی که راه حل‌ به اندازه‌ی کافی‌ خوب باشد

پایان الگوریتم

آیا ما می‌توانیم از این ایده‌ی گنگ‌ استفاده نماییم‌؟

برخی وقت‌ها‌ بله‌: در صورتی که تعداد راه حل‌های اندکی وجود داشته باشد و شما به اندازه‌ی کافی‌ زمان در اختیار داشته باشید‌، آنگاه‌ روش‌های این فُرمی‌ می‌توانند استفاده شوند‌. امّا برای بیش‌ترِ مسأله‌ها‌ نمی‌توانیم از این راه حل‌ها استفاده نماییم‌: در زمانی که راه حل‌های ممکن‌، زیاد باشند و شما به اندازه‌ی کافی‌ زمان برای امتحان همه‌ی آنها نداشته باشید‌، این راه حل‌ها نمی‌توانند استفاده شوند‌.

ایده‌ای که کم‌تر دارای گنگ بودن می‌باشد (الگوریتم ژنتیکی)

  الگوریتم

یک مجموعه‌ی تصادفی از راه حل‌ها را تولید نمایید

تکرارکن

        هر راه حلّ موجود در مجموعه را امتحان کن و آنها را رُتبه‌بندی کن

        برخی از راه حل‌های بد را از مجموعه بَردار

        برخی از راه حل‌های خوب را تکثیر(زیاد) کن

                برخی از تغییرات کوچک را در مورد آنها به کار بِبَر

تا زمانی که بهترین راه حل‌ به اندازه‌ی کافی‌ خوب شود

پایان الگوریتم

چگونه شما یک راه حل را کد می‌کنید‌؟

 بدیهی است که این‌، وابسته به مسأله می‌باشد‌! الگوریتم‌های ژنتیکی‌ اغلب،‌ راه حل‌ها را به صورت رشته‌های بیتیِ  باطول ثابت(ژنوتیپ یا کروموزوم)‌ کد می‌کنند (به عنوان مثال‌، 101110‌، 111111‌، 000101)‌؛ هر بیت(ژن)‌، برخی از ویژگی‌های راه حل‌های ارائه شده برای مسأله را بیان می‌کند‌. برای اینکه الگوریتم‌های ژنتیکی‌ کار کنند‌، نیاز به این داریم که هر رشته را تست نماییم و به آن‌ امتیازی بدهیم که نشان دهنده‌ی چگونگی خوب بودن آن باشد‌.

 مثال – حَفر برای نفت

 

شکل بالا- تصویری از یک چاه نفت

تصوّر کنید که شما باید برای نفت‌، جایی را در طول یک جادّه‌ی بیابانی یک کیلومتری‌ حفر نمایید‌.

مسأله‌: بهترین مکان در جادّه را که بیش‌ترین مقدار نفت را در روز‌ تولید می‌کند‌، انتخاب نمایید.

می‌توانیم هر راه حل را به صورت یک وضعیّت در جادّه نمایش دهیم‌. تصوّر نمایید که تمام اعداد‌، بین [1000، 0‌]‌ باشند‌.

کجا را برای نفت‌ حفر نماییم‌؟ 

 

مجموعه‌ی همه‌ی راه حل‌های ممکن [1000،0]‌، فضای جستجو یا فضای حالت‌ نام دارد‌. در این مورد‌ این فقط یک عدد است؛ امّا می‌تواند تعداد زیادی عدد یا سمبل باشد‌. همان طور که گفتیم، اغلب‌، الگوریتم‌های ژنتیکی، اعداد را به صورت دودویی(باینری)‌ کد می‌کنند‌. در مورد این مثال‌، ده بیت را، که برای نمایش 0‌ ... 1000‌ کافی است، انتخاب می‌نماییم‌.

تبدیل به رشته‌ی باینری

1      2      4      8      16    32    64    128   256   512  

0      0      1      0      0      0      0      1      1      1      900

0      0      1      1      0      1      0      0      1      0      300

1      1      1      1      1      1      1      1      1      1      1023

 تعریف- در الگوریتم‌های ژنتیکی، این رشته‌های کد شده‌‌ گاهی ژنوتیپ یا کروموزوم نامیده می‌شوند و بیت‌های تکی‌ گاهی وقت‌ها‌ ژن‌ نامیده می‌شوند‌.

 

خلاصه

تا‌کنون دیدیم که چگونه راه حل‌ها را به صورت یک عدد‌ بیان نماییم‌؛ یک عدد را به صورت یک رشته‌ی بیتی‌ کد کردیم‌. یک رتبه یا درجه را برای هر عدد داده شده‌، به منظور تعیین میزان خوب بودن آن راه‌، به آن عدد‌ نسبت می‌دهیم که اغلب‌ تابع شایستگی ‌ نامیده می‌شود‌؛ در شکل قبلی، این اعداد برای دو راه حلّ 1 و 2، به رنگ قرمز نشان داده شده‌اند(عددهای 30 و 5). مثال نفت‌ در واقع‌ بهینه‌سازی با استفاده از یک تابع f(x) است، که ما باید پارامتر x را تطبیق دهیم‌.

فضای جستجو

برای یک تابع ساده‌ی f(x)‌، فضای جستجو یک بعدی است‌، امّا با کد کردن چند مقدار به کروموزوم‌، ابعاد زیادی می‌تواند به وجود آید‌؛ به عنوان مثال‌، برای حالت دو بعدی‌، تابع f‌، به صورت f(x,y) خواهد بود‌‌. فضای جستجو‌ می‌تواند به صورت یک سطح باشد‌، که در آن، هر چه شایستگی بیش‌تر باشد، ارتفاع نقطه بیش‌تر است. هر ژنوتایپ(کروموزوم یا راه حلّ) ممکن‌، یک نقطه در فضا است. یک الگوریتم ژنتیکی‌ تلاش می‌کند که نقطه‌ها را به جاهای بهتر(‌با شایستگی بالاتر‌)، در فضا، منتقل نماید‌. در زیر‌، سه نمونه از منظره‌های شایستگی را مشاهده می‌نماییم‌:

         

         

بدیهی است که نوع فضای جستجو تعیین می‌کند که چگونه یک الگوریتم ژنتیکی‌ کار کند‌. یک فضای کاملاً تصادفی‌ برای یک الگوریتم ژنتیکی‌، بد خواهد بود‌؛ همچنین‌ الگوریتم‌های ژنتیکی‌ اگر فضاهای جستجو شامل تعداد زیادی از موردهای تصادفی باشند‌، ممکن است در ماکزیمم محلّی بیفتند‌.

اضافه کردن جنسیّت‌- عمل تعویض

گرچه الگوریتمی که ما گفتیم‌ برای فضاهای جستجوی ساده‌، کار می‌کند‌، امّا این الگوریتم‌ هنوز خیلی ساده است‌. این الگوریتم‌ به جهش‌های تصادفی‌ برای یافتن یک راه حلّ خوب‌، وابسته می‌باشد‌.

 مطلب مهم:      

با اضافه نمودن جنسیّت به این الگوریتم‌ می‌توانیم نتایج بهتری را به دست آوریم‌؛ این کار‌ با انتخاب دو والد‌، در موقع تکثیر  و ترکیب ژن‌های آنها برای تولید فرزند‌، انجام می‌شود‌؛ به بیان دیگر، دو رشته‌ی بیتی(‌کروموزوم‌) والد با امتیاز بالا انتخاب می‌شوند و با استفاده از تعویض‌، با هم‌ ترکیب می‌شوند‌؛ در نتیجه دو فرزند(‌رشته‌ی بیتی‌)‌ به وجود می‌آیند و سپس هر فرزند‌ هم ممکن است به صورت تصادفی‌ تغییر داده شود، که ‌به این کار، جهش‌ گفته می‌شود‌.

انتخاب والدها

روش‌های زیادی برای انتخاب کروموزوم‌های با امتیاز بهتر‌ وجود دارد‌. امتیاز‌، اغلب‌، شایستگی ‌  نامیده می‌شود‌. [برای این کار] از روش «چَرخِشِ رولِت» ‌ می‌توان به صورت زیر‌ استفاده نمود‌:

-       شایستگی همه‌ی کروموزوم‌ها را باهم جمع نمایید‌.

-       یک عدد تصادفی R را، در محدوده‌ی آن(حاصل‌جمع)‌، به وجود آورید‌.

-       اوّلین کروموزوم موجود در جمعیّت را با این شرط که زمانی که همه‌ی شایستگی‌های کروموزوم‌های قبل از آن‌ باهم جمع می‌شوند‌، دست‌کم، مقدار R را بدهد‌، انتخاب نمایید‌.

 

توجّه:      

        قسمت زیر دارای ارتباط بین رنگ‌ها هم هست.

جمعیّت نمونه

شماره       کروموزوم     شایستگی

1      1010011010      1

2      1111100001      2

3      1011001100      3

4      1010000000      1

5      0000010000      3

6      1001011111      5

7      0101010101      1

8      1011100111      2

توجّه کنید که، جمع کلّّ شایستگی‌ها برابر است با: 1+2+3+1+3+5+1+2 = 18

انتخاب والدها با استفاده از روش چرخش رولت(برای جدول قبلی)

 

در شکل بالا توجّه کنید که جمع کلّ شایستگی‌ها برابر است با: 1+2+3+1+3+5+1+2 = 18 و به همین خاطر محدوده از صفر تا 18 در نظر گرفته شده است.

 چرخش رولت، نام یک بازی هم می‌باشد، که در آن، اعدادی به طور نامنظّم روی یک صفحه‌ی دایره‌ای شکل نوشته شده‌اند؛ این صفحه را می‌چرخانند و سپس رهایش می‌کنند تا خودش از حرکت بایستد و عددی را که مقابل نقطه‌ای خاص قرار گرفته را برمی‌گزینند.

 

شکل بالا- صفحه‌ی بازی چرخش رولت

تعویض(‌جفت‌گیری‌)

برای کروموزوم‌های شماره‌ی4(1010000000) و 6(1001011111)، که در قسمت قبل انتخاب کردیم، نقطه‌ی تعویض را به صورت تصادفی برابر با 3 در نظر می‌گیریم؛ داریم:

 

جهش

یک یا بیش‌تر ژن‌(بیت)، به صورت تصادفی‌، به یک مقدار تصادفی‌، جهش داده می‌شوند‌، مثلاً‌:

(بعد از انجام عمل جهش)1101011111    1111111111(قبل از انجام عمل جهش)

 در مورد مثال قبلی‌، داریم‌:

 

توجّه:      

        پایان قسمت دارای ارتباط بین رنگ‌ها!

 

برگشت به الگوریتم ژنتیکی [و تکمیل آن]

  الگوریتم

یک جمعیّت را با استفاده از کروموزوم‌های تصادفی‌ تولید کن

برای هر نسل‌ کارهای زیر را انجام بده

        شایستگی هر کروموزوم را محاسبه کن

                کارهای زیر را تکرار کن

                        انتخاب رولت را برای انتخاب جفت‌های والدها به کار ببر

                        فرزند را با استفاده از انجام عمل تعویض و جهش‌ تولید نما

                تا زمانی که جمعیّت جدید‌ تولید شود

تا زمانی که بهترین راه حل به اندازه‌ی کافی‌ خوب شود

پایان الگوریتم

گوناگونی‌های زیاد الگوریتم‌های ژنتیکی

به خاطر موردهای زیر‌ الگوریتم‌های ژنتیکی‌ دارای گوناگونی زیادی هستند‌:

       انواع مختلف انتخاب که [با استفاده از روش چرخش] رولت نیستند‌؛ مثل‌ روش‌های مسابقه‌ای ‌، گزینش بهترین‌ها(نخبه‌سالاری)  و غیره‌.

       تفاوت در جفت‌گیری(تعویض)‌؛ مثل‌ روش تعویض چند نقطه‌ای‌.

       انواع مختلف کد کردن رشته‌ی بیتی‌

       انواع مختلف جهش

تعویض‌ چگونه کار می‌کند‌؟

تعداد زیادی نظریّه در این مورد‌ وجود دارد‌، البتّه‌ برخی مخالفت‌ها هم با این نظریّه‌ها وجود دارد‌؛ هالِند‌ نظریّه‌ی «‌الگو» را معرّفی کرد‌؛ این ایده می‌گوید که، تعویض‌، بیت‌های خوب والدین مختلف را نگهداری می‌کند و آنها را برای تولید راه حل‌های بهتر‌ ترکیب می‌نماید‌؛ بنابراین‌ یک الگوی خوب کد کننده‌ باید بیت‌های خوب را در طول تعویض و جهش‌ نگهداری نماید‌.

کاربردهای الگوریتم‌های ژنتیکی

الگوریتم‌های ژنتیکی‌ در بسیاری از موردها و زمینه‌های پژوهشی‌، نظیر مسأله‌های عددی‌؛ مسأله‌ی مسافرت شخص دوره گرد ‌؛ مدار(دُوْر) هَمیلتُونی ‌؛ پیدا کردن شکل مولکول‌های پروتئین‌؛ مسأله‌های NP-سخت‌؛ طرّاحی شبکه‌های عصبی‌؛ توابع، برای به وجود آوردن تصاویر‌؛ مدلسازی شناختی؛ و تئوری بازی‌ها‌ به کار می‌روند‌.

برنامه‌نویسی ژنتیکی

 تعریف- شاخه‌ای از الگوریتم‌های ژنتیکی و یادگیری ماشینی  می‌باشد و یک روش برنامه‌نویسی است که الگوریتم ژنتیکی را برای تمام برنامه‌های کامپیوتری گسترش می‌دهد.  برنامه‌نویسی ژنتیکی‌ به وسیله‌ی گروه دکتر، جان کُوزا ‌ به وجود آمد‌.

 

شکل بالا- دکتر، جان کوزا

 

 

چکیده‌ی مطلب‌های فصل هیجدهم

یک الگوریتم ژنتیکی، یک الگوریتم جستجو است که، رشته‌های دودویی بهینه را با پردازش یک جمعیّت اولیّه‌ی تصادفی از رشته‌ها‌، با استفاده از جهش مصنوعی، عمل تعویض و عملگرهای انتخاب تولید می‌کند.

الگوریتم‌های ژنتیکی‌، اغلب‌، راه حل‌ها را به صورت رشته‌های بیتی باطول ثابت(ژنوتیپ یا کروموزوم)‌ کد می‌کنند؛ هر بیت(ژن)‌، برخی از ویژگی‌های راه حل‌های ارائه شده برای مسأله را ارائه می‌کند‌. برای اینکه الگوریتم‌های ژنتیکی‌ کار کنند‌، نیاز به این داریم که هر رشته را تست نماییم و به آن‌ امتیازی بدهیم که نشان دهنده‌ی چگونگی خوب بودن آن باشد‌.

در الگوریتم‌های ژنتیکی، جفت‌گیری(recombination)، همان تعویض(crossover) می‌باشد.

تعویض‌، با انتخاب دو والد(رشته‌ی بیتی یا ‌کروموزوم‌) با امتیاز بالا‌، در موقع تکثیر، و ترکیب ژن‌های آنها، برای تولید دو فرزند(‌رشته‌ی بیتی‌)‌، انجام می‌شود. سپس هر فرزند‌ هم ممکن است به صورت تصادفی‌ تغییر داده شود، که ‌به این کار، جهش‌ گفته می‌شود‌.

یکی از روش‌های انتخاب کروموزوم‌های با امتیاز بهتر، روش چرخش رولت است.



:: برچسب‌ها: ██ متن فصل هیجدهم نسخه‌ی رایگان ایبوک هوش مصنوعی ██ , مترجم: سهراب جلوه گر جلوه‌گر , فصل الگوریتم‌های ژنتیکی , آموزش هوش مصنوعی,

صفحه قبل 1 2 صفحه بعد


.:: This Template By : Theme-Designer.Com ::.